/**
 * 数组工具函数
 */

/**
 * 将数组分割成指定大小的小数组
 * @param arr - 要分割的数组
 * @param size - 分割大小
 * @returns 分割后的数组集合
 */
export function chunk<T>(arr: T[], size: number): T[][] {
  if (size <= 0) {
    throw new Error('分割大小必须大于0');
  }
  
  const result: T[][] = [];
  for (let i = 0; i < arr.length; i += size) {
    result.push(arr.slice(i, i + size));
  }
  return result;
}

/**
 * 从数组中删除重复值
 * @param arr - 要处理的数组
 * @returns 包含唯一值的数组
 */
export function unique<T>(arr: T[]): T[] {
  return [...new Set(arr)];
}

/**
 * 随机打乱数组
 * @param arr - 要打乱的数组
 * @returns 打乱后的数组
 */
export function shuffle<T>(arr: T[]): T[] {
  const result = [...arr];
  for (let i = result.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [result[i], result[j]] = [result[j], result[i]];
  }
  return result;
} 